﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Drawing.Drawing2D;
using System.Drawing;

using DotSpatial.Data;

using DotSpatial.Topology;



namespace FXnaGis
{
    [Serializable]
    public class FTransformedVectorLayer:FVectorLayer
    {

        public FTransformedVectorLayer(string id)
            : base(id)
        {
 
        }


        double _xOffset;

        public double XOffset
        {
            get { return _xOffset; }
            set { _xOffset = value; }
        }

        double _yOffset;

        public double YOffset
        {
            get { return _yOffset; }
            set { _yOffset = value; }
        }

      


        //还需要重写碰撞检测逻辑,判断逻辑

        protected override void DoCollsionDectection(FMapArgs args, List<DotSpatial.Data.Extent> regions)
        {
            //清空上一次的绘制
            //绘制前清空的一个好处是，可以利用drawingshape,执行某些高效率的查询服务，比如shape的选择，shape点的分布情况等
            this._tempVisibleShapes.Clear();



            //需要提前移动位置，返现引动，从而支持图形的平移绘制

            Coordinate shift = new Coordinate((-1* this._xOffset),(-1*this._yOffset));



            //需要逐一进行碰撞检测，

            foreach (Extent region in regions)
            {

                Envelope env = (Envelope)region.ToEnvelope();



                env.Translate(shift);



                foreach (FShape shape in Shapes.Values)
                {

                    //使用更精确的碰撞算法

                    if (shape.Intersects(env))
                    {
                        this._tempVisibleShapes.Add(shape);

                    }



                }


            }
           

            //这里重写了原有的函数
            
            //base.DoCollsionDectection(args, regions);


        }


        protected override void DrawCore(FMapArgs args, List<Extent> regions)
        {


            base.DrawCore(args, regions);


        }



        


    }
}
